這問題也是出自於弱掃,系統提供一個備註欄給user隨意填寫,SA規格也未限制,導致被視為弱點。正常user幾乎輸入中文、全形字為主,阿拉伯數字則為半形。
經ChatGPT開示,可以在Regex使用以下Pattern搜尋
[\p{IsHiragana}\p{IsKatakana}\p{IsHan}\p{IsFullwidth}]
但p{IsFullwidth}
在Java並不支援,而且就算用[\\uFF01-\\uFF5E]
或[!-~]
也涵蓋不了所有全形字。所以最後也只能列舉,如下例:
"[\\p{IsHiragana}\\p{IsKatakana}\\p{IsHan},。;:() ~0-9/]{5,80}"
中秋節快樂!